package com.tom.architect02.ui20.day18;

import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;

public class StatusBarUtil {
    // 为Activity 状态栏设置颜色。TODO 状态栏的字体颜色修改。
    public static void setStatusBarColor(Activity activity, int color) {
        // 5.0+
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            activity.getWindow().setStatusBarColor(color);
        }
        // 4.4~5：先弄成全屏，然后在状态栏的部分，加一个布局
        else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            // 电量，电池，网络等状态都还在。
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            // 加一个布局
            View view = new View(activity);
            view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                    getStatusBarHeight(activity)));
            view.setBackgroundColor(color);
            // android:fitsSystemWindows="true" 避免每个布局都写。paddingTop="25dp"
            // decorView是FrameLayout。 FrameLayout会加载一个系统布局LinearLayout布局。
            // 在系统布局中，有一个id为R.id.content 的布局，是一个RelativeLayout布局？ 我们的布局，就是加在这个RelativeLayout上的。
            ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
            decorView.addView(view);

            // 获取activity中，setContentView的根布局。
            ViewGroup contentView = activity.findViewById(android.R.id.content);
            View activityView = contentView.getChildAt(0);
            activityView.setFitsSystemWindows(true);
            // activityView.setPadding(0, getStatusBarHeight(activity),0,0);
            // contentView.setPadding(0, getStatusBarHeight(activity),0,0);
        }
    }

    // 获取状态栏高度
    private static int getStatusBarHeight(Activity activity) {
        // 插件式换肤：怎么获取资源，先获取资源id，根据id获取资源。
        Resources resource = activity.getResources();
        int statusBarHeightId = resource.getIdentifier("status_bar_height", "dimen", "android");
        int height = resource.getDimensionPixelOffset(statusBarHeightId);
        return height;
    }

    // 设置activity 全屏效果
    public static void setStatusBarTranslucent(Activity activity) {
        // 5.0+
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            // 5.0， 6.0比较源码。
            View decorView = activity.getWindow().getDecorView();
            decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
            activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
        }
        // 4.4~5：先弄成全屏，然后在状态栏的部分，加一个布局
        else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }
    }

}
